<?php
	class PedidosController extends AppController {
		var $name = 'Pedidos';
		var $components = array('RequestHandler');
		var $helpers = array(
				'Ajax',
				'Paginator',
				'Time',
				'Foto'
		);

		function index() {
			$this -> Pedido -> recursive = 1;
			$this -> set('pedidos', $this -> paginate('Pedido', array('Pedido.estado' => '0')));
		}

		function view($id = null) {
			if (!$id) {
				$this -> Session -> setFlash(__('Invalid pedido', true));
				$this -> redirect(array('action' => 'index'));
			}
			$this -> set('pedido', $this -> Pedido -> read(null, $id));
		}

		function add() {
			if (!empty($this -> data)) {
				$this -> Pedido -> create();
				if ($this -> Pedido -> save($this -> data)) {
					foreach ($this -> data['Orden'] as $articulo_id => $cantidad) {
						$this -> Pedido -> Orden -> create();
						$this -> Pedido -> Orden -> set(array(
								'articulo_id' => $articulo_id,
								'cantidad' => $cantidad,
								'pedido_id' => $this -> Pedido -> id,
						));
						$this -> Pedido -> Orden -> save();
					}
					$this -> Session -> setFlash('El pedido ha sido creado');
					$this -> redirect(array('action' => 'index'));
				} else {
					$this -> Session -> setFlash('El pedido no se ha guardado, intente nuevamente.');
				}
			}
			$clientes = $this -> Pedido -> Cliente -> find('list');
			$articulos = $this -> Pedido -> Orden -> Articulo -> find('list');
			$this -> set(compact('clientes', 'articulos'));
		}

		function edit($id = null) {
			if (!$id && empty($this -> data)) {
				$this -> Session -> setFlash(__('Invalid pedido', true));
				$this -> redirect(array('action' => 'index'));
			}
			if (!empty($this -> data)) {
				if ($this -> Pedido -> save($this -> data)) {
					# Lo que se hace acá es borrar todas las ordenes que tenía el pedido
					# y crear las nuevas.
					
					# Me traigo todas las ordenes que tienen el id del pedido que se está modificando
					$ordenes = $this -> Pedido -> Orden -> findAllByPedidoId($id);
					# Elimino todas las órdenes que busqué
					foreach ($ordenes as $orden) {
						$this -> Pedido -> Orden -> delete($orden['Orden']['id']);
					}
					
					# Creo todas las órdenes que vienen
					foreach ($this -> data['Orden'] as $articulo_id => $cantidad) {
						$this -> Pedido -> Orden -> create();
						$this -> Pedido -> Orden -> set(array(
								'articulo_id' => $articulo_id,
								'cantidad' => $cantidad,
								'pedido_id' => $this -> Pedido -> id,
						));
						$this -> Pedido -> Orden -> save();
					}
					
					//$this -> Session -> setFlash('El pedido ha sido modificado');
					//$this -> redirect(array('action' => 'index'));
				} else {
					$this -> Session -> setFlash(__('The pedido could not be saved. Please, try again.', true));
				}
			}
			if (empty($this -> data)) {
				$this -> data = $this -> Pedido -> read(null, $id);
			}
			$clientes = $this -> Pedido -> Cliente -> find('list');
			$articulos = $this -> Pedido -> Orden -> Articulo -> find('list');
			$ordenes = $this -> Pedido -> Orden -> findAllByPedidoId($id);
			$this -> set(compact('clientes', 'articulos', 'ordenes'));
		}

		function delete($id = null) {
			if (!$id) {
				$this -> Session -> setFlash('Pedido inválido');
				$this -> redirect(array('action' => 'index'));
			}
			if ($this -> Pedido -> delete($id)) {
				# Lo que se hace acá es eliminar todas las ordenes que tenía el pedido
				
				# Me traigo todas las ordenes que tienen el id del pedido que se está eliminando
				$ordenes = $this -> Pedido -> Orden -> findAllByPedidoId($id);
				# Elimino todas las órdenes que busqué
				foreach ($ordenes as $orden) {
					$this -> Pedido -> Orden -> delete($orden['Orden']['id']);
				}
				
				$this -> Session -> setFlash('El pedido fue eliminado');
				$this -> redirect(array('action' => 'index'));
			}
			$this -> Session -> setFlash('Ocurrió un error. El pedido no fue eliminado.');
			$this -> redirect(array('action' => 'index'));
		}

	}
?>